package com.whitedust.top70;

import java.util.Random;

/**
 *
 * @author A
 * @since 2025/11/11 12:55
 */

public class Top67 {
    //(randX() - 1)*Y + randY() 可以等概率的生成[1, X * Y]范围的随机数
    public int rand10() {
        while (true) {
            int num = (rand7() - 1) * 7 + rand7();
            // 如果在40以内，那就直接返回
            if (num <= 40) return 1 + num % 10;
            // 说明刚才生成的在41-49之间，利用随机数再操作一遍
            // 范围就是(rand9-1)*7+rand7() [1,9*7]
            num = (num - 40 - 1) * 7 + rand7();
            if (num <= 60) return 1 + num % 10;
            // 说明刚才生成的在61-63之间，利用随机数再操作一遍
            // 范围就是(rand3-1)*7+rand7() [1,3*7]
            num = (num - 60 - 1) * 7 + rand7();
            if (num <= 20) return 1 + num % 10;
        }
    }

    private int rand7() {
        return new Random().nextInt(7);
    }
}
